เทคนิคง่ายๆ ตายน้ำตื้น
ช่วยด้วย! ตอนทดสอบบนเครื่องมัน Login ได้ค่ะ แต่พอเอาขึ้น Host แล้วมันไม่ยอมให้ Login ค่ะ
ลองเพิ่ม
$user=$_POST["user];
$passwd=$_POST["passwd];
เข้าไปในโค้ดของของคุณ ก่อนใช้งานตัวแปร $user, $passwd สิครับ
สาเหตุ เนื่องจากบางเซิร์ฟเวอร์มีการป้องกันการส่งค่าตัวแปรผ่านฟอ์รม ที่มาจาก methode Post หรือ Get ดังนั้นคุณควรมีการเขียนโค้ดเพื่อรับค่าตัวแปรนี้ก่อนการใช้งาน ด้วยฟังก์ชั่น $_POST หรือ $_GET
มันไม่ยอมเปลี่ยนไปอีกหน้าครับ? ผมตรวจสอบแล้วมันก็เข้ามาทำงานในฟังก์ชั่นเรียบร้อยแล้ว
จากโค้ด คุณใช้
header("Location : logout.php");
ผมแนะนำให้คุณเปลี่ยนการ Redirect เป็น
echo "<META HTTP-EQUIV=refresh CONTENT=\"0; URL=logout.php\">";
เนื่องจากฟังก์ชั่น header มีข้อจำกัดค่อนข้างมากครับ ซึ่งโดยปกติ การใช้ header ที่ไม่สำเร็จมักเกิดการการที่เรามีโค้ดอื่นๆที่แสดงข้อความ ก่อนหน้าโค้ดนี้ครับ
Login แล้วมันไม่ยอมจำชื่อผมครับ? ผมใช้ Cookie เก็บชื่อ Login ไว้แต่พอเปลี่ยนหน้า มันไม่มีชื่อผมแล้วครับ
การใช้งาน Cookie ที่เป็นปัญหามากที่สุดคือเรามักลืมใส่
ob_start();
ที่บรรทัดแรกของโค้ดเราครับ
ก็เหมือนกับฟังก์ชั่น header ข้างบนละครับ ตัวแปร Cookie จะไม่ทำงานหากมีโค้ดที่แสดงข้อความก่อนหน้า ปฏิบัติมาก่อน เพื่อกันลืม หากเราต้องการใช้ Cookie ในหน้าใด ให้เราแทรกฟังก์ชั่น ob_start(); ไว้ตอนบนสุดของโค้ดก่อนทุกครั้ง และอีกหนึ่งเรื่องคือ ผมแนะนำให้ใช้ $_COOKIE แทนอย่างอื่นครับ เช่น
$user=$_COOKIE["user];
แถมอีก 1 ข้อ Cookie จะทำงานบนไดเร็คทอรี่เดียวกันเท่านั้นครับไม่สามารถใช้กับหน้าที่อยู่ต่างกันคนละไดเร็คทอรี่ได้ เช่น Cookie ที่สร้างจาก webboard/index.php เป็นคนละตัวกันกับ Cookie ที่สร้างจาก member/login.php
ลองเพิ่ม
$user=$_POST["user];
$passwd=$_POST["passwd];
เข้าไปในโค้ดของของคุณ ก่อนใช้งานตัวแปร $user, $passwd สิครับ
สาเหตุ เนื่องจากบางเซิร์ฟเวอร์มีการป้องกันการส่งค่าตัวแปรผ่านฟอ์รม ที่มาจาก methode Post หรือ Get ดังนั้นคุณควรมีการเขียนโค้ดเพื่อรับค่าตัวแปรนี้ก่อนการใช้งาน ด้วยฟังก์ชั่น $_POST หรือ $_GET
มันไม่ยอมเปลี่ยนไปอีกหน้าครับ? ผมตรวจสอบแล้วมันก็เข้ามาทำงานในฟังก์ชั่นเรียบร้อยแล้ว
จากโค้ด คุณใช้
header("Location : logout.php");
ผมแนะนำให้คุณเปลี่ยนการ Redirect เป็น
echo "<META HTTP-EQUIV=refresh CONTENT=\"0; URL=logout.php\">";
เนื่องจากฟังก์ชั่น header มีข้อจำกัดค่อนข้างมากครับ ซึ่งโดยปกติ การใช้ header ที่ไม่สำเร็จมักเกิดการการที่เรามีโค้ดอื่นๆที่แสดงข้อความ ก่อนหน้าโค้ดนี้ครับ
Login แล้วมันไม่ยอมจำชื่อผมครับ? ผมใช้ Cookie เก็บชื่อ Login ไว้แต่พอเปลี่ยนหน้า มันไม่มีชื่อผมแล้วครับ
การใช้งาน Cookie ที่เป็นปัญหามากที่สุดคือเรามักลืมใส่
ob_start();
ที่บรรทัดแรกของโค้ดเราครับ
ก็เหมือนกับฟังก์ชั่น header ข้างบนละครับ ตัวแปร Cookie จะไม่ทำงานหากมีโค้ดที่แสดงข้อความก่อนหน้า ปฏิบัติมาก่อน เพื่อกันลืม หากเราต้องการใช้ Cookie ในหน้าใด ให้เราแทรกฟังก์ชั่น ob_start(); ไว้ตอนบนสุดของโค้ดก่อนทุกครั้ง และอีกหนึ่งเรื่องคือ ผมแนะนำให้ใช้ $_COOKIE แทนอย่างอื่นครับ เช่น
$user=$_COOKIE["user];
แถมอีก 1 ข้อ Cookie จะทำงานบนไดเร็คทอรี่เดียวกันเท่านั้นครับไม่สามารถใช้กับหน้าที่อยู่ต่างกันคนละไดเร็คทอรี่ได้ เช่น Cookie ที่สร้างจาก webboard/index.php เป็นคนละตัวกันกับ Cookie ที่สร้างจาก member/login.php